{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n",
      "nclass: 5990\n"
     ]
    }
   ],
   "source": [
    "#Edit:2017-11-21\n",
    "#@sima\n",
    "#%%\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "import time\n",
    "class Timer(object):\n",
    "    def __init__(self):\n",
    "        self.total_time = 0.\n",
    "        self.calls = 0\n",
    "        self.start_time = 0.\n",
    "        self.diff = 0.\n",
    "        self.average_time = 0.\n",
    "\n",
    "    def tic(self):\n",
    "        self.start_time = time.time()\n",
    "\n",
    "    def toc(self, average=True):\n",
    "        self.diff = time.time() - self.start_time\n",
    "        self.total_time += self.diff\n",
    "        self.calls += 1\n",
    "        self.average_time = self.total_time / self.calls\n",
    "        if average:\n",
    "            return self.average_time\n",
    "        else:\n",
    "            return self.diff\n",
    "        \n",
    "        \n",
    "from keras.layers import Input,Conv2D,MaxPooling2D,ZeroPadding2D\n",
    "from keras.layers import Flatten,BatchNormalization,Permute,TimeDistributed,Dense,Bidirectional,GRU\n",
    "from keras.models import Model\n",
    "\n",
    "\n",
    "import numpy as np\n",
    "from PIL import Image\n",
    "import keras.backend  as K\n",
    "\n",
    "from imp import reload \n",
    "import densenet\n",
    "reload(densenet)\n",
    "\n",
    "import os\n",
    "from keras.layers import Lambda\n",
    "from keras.optimizers import SGD\n",
    "\n",
    "import tensorflow as tf  \n",
    "import keras.backend.tensorflow_backend as K  \n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "def get_session(gpu_fraction=0.8):  \n",
    "    '''''Assume that you have 6GB of GPU memory and want to allocate ~2GB'''  \n",
    "  \n",
    "    num_threads = os.environ.get('OMP_NUM_THREADS')  \n",
    "    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_fraction)  \n",
    "  \n",
    "    if num_threads:  \n",
    "        return tf.Session(config=tf.ConfigProto(  \n",
    "            gpu_options=gpu_options, intra_op_parallelism_threads=num_threads))  \n",
    "    else:  \n",
    "        return tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))  \n",
    "  \n",
    "K.set_session(get_session()) \n",
    "\n",
    "\n",
    "char=''\n",
    "with open('D:\\\\char_std_5990.txt',encoding='utf-8') as f:\n",
    "      for ch in f.readlines():\n",
    "            ch = ch.strip('\\r\\n')\n",
    "            char=char+ch\n",
    "            \n",
    "#caffe_ocr中把0作为blank，但是tf 的CTC  the last class is reserved to the blank label.\n",
    "#https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/util/ctc/ctc_loss_calculator.h\n",
    "char =char[1:]+'卍'\n",
    "nclass = len(char)\n",
    "print('nclass:',len(char))\n",
    "id_to_char = {i:j for i,j in enumerate(char)}\n",
    "\n",
    "\n",
    "modelPath =r'E:\\deeplearn\\OCR\\Sample\\model\\weights-densent-09.hdf5'\n",
    "input = Input(shape=(32,None,1),name='the_input')\n",
    "y_pred= densenet.dense_cnn(input,nclass)\n",
    "basemodel = Model(inputs=input,outputs=y_pred)\n",
    "basemodel.load_weights(modelPath)\n",
    "   \n",
    "t = Timer()\n",
    "def predict(img_path):\n",
    "    \n",
    "    img = Image.open(img_path)\n",
    "    im = img.convert('L')\n",
    "    scale = im.size[1]*1.0 / 32\n",
    "    w = im.size[0] / scale\n",
    "    w = int(w)\n",
    "    print('w:',w)\n",
    "    \n",
    "    im = im.resize((w,32),Image.ANTIALIAS)\n",
    "    img = np.array(im).astype(np.float32)/255.0-0.5\n",
    "    X  = img.reshape((32,w,1))\n",
    "    X = np.array([X])\n",
    "    \n",
    "    \n",
    "    t.tic()\n",
    "    y_pred = basemodel.predict(X)\n",
    "    t.toc()\n",
    "    print(\"times,\",t.diff)\n",
    "    argmax = np.argmax(y_pred, axis=2)[0]\n",
    "    \n",
    "    y_pred = y_pred[:,:,:]\n",
    "    out = K.get_value(K.ctc_decode(y_pred, input_length=np.ones(y_pred.shape[0])*y_pred.shape[1], )[0][0])[:, :]\n",
    "    out = u''.join([id_to_char[x] for x in out[0]])\n",
    "\n",
    "\n",
    "    return out,im\n",
    "\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: 280\n",
      "times, 0.016004323959350586\n",
      "预测m1: 小，①大剂量的维生素\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1791764e5f8>"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1791401cda0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "testimage = r'E:\\deeplearn\\OCR\\Sample\\testhan\\124.jpg'\n",
    "#testimage = r'E:\\deeplearn\\OCR\\Sample\\samples\\000000001.jpg'\n",
    "b,img= predict(testimage)\n",
    "print('预测m1:',b)\n",
    "\n",
    "plt.imshow(img,cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
